import {
	loginApi,
} from '@utils/apis'
import {
	treeClick,
} from './main-methods'

export default function(user) {
	let comps = {
		layoutJQ: $("#main-layout"),
		treeJQ: $("#main-tree"),
		tabsJQ: $("#main-tabs"),
	}
	initTabs(comps)
	initTree(comps, user)
	initLayout(comps)
}

function initLayout(comps) {
	comps.layoutJQ.layout({
		fit: true,
	})
}

function initTree(comps, user) {
	let treeJQ = comps.treeJQ
	treeJQ.tree({
		data: [],
		animate: true,
		onClick(node) {
			treeClick.call(this, node, comps.tabsJQ, user)
		},
	});
	let {
		menuTree,
	} = user
	if (Array.isArray(menuTree)) {
		let treeData = parseMenuTree(menuTree)
		treeJQ.tree('loadData', treeData)
	}
}

function parseMenuTree(menuTree) {
	let treeData = []
	for (let i = 0; i < menuTree.length; i++) {
		let module = menuTree[i]
		let data = {
			id: module.module_id,
			text: module.module_name,
			attributes: {},
			// state: "closed",
		}
		if (Array.isArray(module.children))
			data.children = parseMenuTree(module.children)
		if (module.route) {
			data.attributes.route = module.route
			data.attributes.action_func_id = module.action_func_id
		}
		treeData.push(data)
	}
	return treeData
}

function initTabs(comps) {
	let tabsJQ = comps.tabsJQ
	tabsJQ.tabs({
		fit: true,
	})
}

// async function loadDefaultPage(tabsJQ) {
// 	let node = null
// 	for (let i = 0; i < userMenu.length; i++) {
// 		let menuNode = userMenu[i]
// 		if (defaultNodeId == menuNode.id) {
// 			node = menuNode
// 			break;
// 		}
// 	}
// 	let {
// 		title,
// 		content,
// 	} = node.attributes
// 	if (typeof content == 'function') {
// 		content = await content()
// 	}
// 	tabsJQ.tabs('add', {
// 		id: node.id,
// 		title: title,
// 		content,
// 		// closable: true,
// 	})
// }